package at.ac.tuwien.lsds.schedule.strategy;

import java.util.Observer;

import at.ac.tuwien.lsds.exception.SchedulerException;
import at.ac.tuwien.lsds.model.Application;
import at.ac.tuwien.lsds.util.ProcessSummaryOutputRow;
import at.ac.tuwien.lsds.util.SchedulerOutputRow;

public interface ScheduleStrategy extends Observer {
	
	public void runApplication(Application app)  throws SchedulerException;
	public void runApplication(Application app, Boolean queueing)  throws SchedulerException;
	
	/**
	 * get currently running vms
	 * @return
	 */
	public Integer getRunningPMCount();
	
	/**
	 * @return the current overall power consumption per time unit
	 */
	public Float getCurrentPowerConsumption();
	
	/**
	 * Simulates the progress of time
	 */
	public void increaseRunningTime();
	
	public void runningTimeIncreased();
	
	public ProcessSummaryOutputRow getProcessSummaryOutputRow();
	public SchedulerOutputRow getCurrentConsumptionOutputRow(Integer currentTimestamp);
}
